// pages/common/article-list/article-list.ts
import { getArticleList, getArticleCategories } from '../../../api/article'

Page({
  data: {
    // 当前选中的分类
    currentCategory: 'all',
    // 文章列表
    articleList: [],
    // 加载状态
    loading: false,
    // 是否还有更多数据
    hasMore: true,
    // 当前页码
    currentPage: 1,
    // 每页数量
    pageSize: 10,
    // 分类列表
    categories: []
  },

  onLoad() {
    console.log('文章列表页面加载完成')
    this.initPage()
  },

  onShow() {
    console.log('文章列表页面显示')
  },

  // 初始化页面
  async initPage() {
    try {
      await this.loadCategories()
      await this.loadArticleList(true)
    } catch (error) {
      console.error('初始化页面失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
    }
  },

  // 加载分类列表
  async loadCategories() {
    try {
      const res = await getArticleCategories()
      if (res.status === 200) {
        // 将分类数据转换为原型页面的格式
        const categories = [
          { id: 'all', title: '全部展会' },
          { id: 'material', title: '模切材料' },
          { id: 'processing', title: '模切加工' }
        ]
        this.setData({
          categories
        })
      }
    } catch (error) {
      console.error('加载分类失败:', error)
    }
  },

  // 加载文章列表
  async loadArticleList(reset = false) {
    if (this.data.loading) return

    this.setData({
      loading: true
    })

    try {
      const page = reset ? 1 : this.data.currentPage
      const params = {
        page,
        limit: this.data.pageSize
      }

      // 根据分类设置cid参数
      if (this.data.currentCategory !== 'all') {
        // 这里需要根据实际的分类ID映射
        const categoryMap = {
          'material': 1,
          'processing': 2
        }
        params.cid = categoryMap[this.data.currentCategory] || 0
      }

      const res = await getArticleList(params)
      
      if (res.status === 200) {
        const newList = res.data || []
        
        // 为文章添加分类名称和处理图片数据
        const processedList = newList.map(item => ({
          ...item,
          categoryName: this.getCategoryName(item.cid),
          // 从image_input数组中取第一张图片
          image: this.getFirstImage(item.image_input),
          // 处理摘要信息
          summary: item.synopsis || item.share_synopsis || ''
        }))

        this.setData({
          articleList: reset ? processedList : [...this.data.articleList, ...processedList],
          currentPage: page + 1,
          hasMore: newList.length >= this.data.pageSize,
          loading: false
        })
      } else {
        throw new Error(res.msg || '加载失败')
      }
    } catch (error) {
      console.error('加载文章列表失败:', error)
      this.setData({
        loading: false
      })
      wx.showToast({
        title: error.message || '加载失败',
        icon: 'none'
      })
    }
  },

  // 获取分类名称
  getCategoryName(cid) {
    const categoryMap = {
      0: '热门',
      1: '模切材料',
      2: '模切加工'
    }
    return categoryMap[cid] || '其他'
  },

  // 从image_input数组中获取第一张图片
  getFirstImage(imageInput) {
    if (!imageInput || !Array.isArray(imageInput) || imageInput.length === 0) {
      return ''
    }
    return imageInput[0] || ''
  },

  // 分类切换
  onCategoryChange(e) {
    const category = e.currentTarget.dataset.category
    if (category === this.data.currentCategory) return

    this.setData({
      currentCategory: category,
      articleList: [],
      currentPage: 1,
      hasMore: true
    })

    this.loadArticleList(true)
  },

  // 文章点击
  onArticleTap(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/common/article-detail/article-detail?id=${id}`
    })
  },

  // 加载更多
  loadMore() {
    if (!this.data.hasMore || this.data.loading) return
    this.loadArticleList(false)
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      articleList: [],
      currentPage: 1,
      hasMore: true
    })
    this.loadArticleList(true).finally(() => {
      wx.stopPullDownRefresh()
    })
  },

  // 上拉加载更多
  onReachBottom() {
    this.loadMore()
  }
})
